/* 
 * File:   ExpValueDrawingStrategy.h
 * Author: root
 *
 * Created on December 3, 2008, 9:41 AM
 */

#ifndef _EXPVALUEDRAWINGSTRATEGY_H
#define	_EXPVALUEDRAWINGSTRATEGY_H

#include "DrawingStrategy.h"
#include "Query.h"

class ExpValueDrawingStrategy : public DrawingStrategy {
    
protected:
    
    int decisionCertainty;
    
    virtual void setExecutionParameter(int index, int value) {}
    
    int calculateGain(CCardStack* hand, const CCard& card, bool picked, const GameState* gameState);
    
public:
    
    ExpValueDrawingStrategy() 
    : DrawingStrategy(string("ExpValueDrawingStrategy"), 0), decisionCertainty(0) {}

    ExpValueDrawingStrategy (int myWeight)
    : DrawingStrategy (myWeight), decisionCertainty(0)
    { }

    virtual int getDecisionCertainty() {
        return decisionCertainty;
    }
    
    virtual Strategy* getActiveInstance(int inst_weight) {
        return dynamic_cast<Strategy*>(new ExpValueDrawingStrategy(inst_weight));
    }

    virtual void opponentMove ( int opponent, const Move& move ) {}
    virtual bool pickFromDiscard (CCardStack*, const GameState*);
    
};

#endif	/* _EXPVALUEDRAWINGSTRATEGY_H */

